
#ifndef CTKPLUGIN_ACTIONREGISTER_H
#define CTKPLUGIN_ACTIONREGISTER_H

#include "ctkDictionary.h"
#include <QJsonObject>
/*****
 * @brief 注册菜单栏
 * @param name     是现实在action的菜单menu的名称
 * @param id       是该菜单的唯一编号(也是菜单点击后的事件的id， 事件根据此id发送)
 * @param num      是排在第几个位置(如果有重复的可能会按照后注册插件的来)
 * @param picture  是图标的路径
 */
struct ActionData
{
    QString menu_name;
    QString action_name;
    int num{-1};
    QString picture;
};

class ActionDictionary
{
public:
    ActionDictionary() = default;
    ~ActionDictionary() = default;
    void registerAction(const ActionData &actionData);
    ctkDictionary getDictionary() { return dictionary; }

private:
    ctkDictionary dictionary;
};

void ActionDictionary::registerAction(const ActionData &actionData)
{
    QJsonObject obj;
    obj.insert("menu_name", actionData.menu_name);
    obj.insert("action_name", actionData.action_name);
    obj.insert("num", actionData.num);
    obj.insert("picture", actionData.picture);
    dictionary.insert(actionData.action_name, QVariant::fromValue(obj));
}

#endif //CTKPLUGIN_ACTIONREGISTER_H
